package com.example.supplychainbackend.mapper;
import com.example.supplychainbackend.controller.dto.warehouse.*;
import com.example.supplychainbackend.entity.warehouse.*;

import org.mapstruct.Builder;
import org.mapstruct.Mapper;

import java.util.List;

@Mapper(componentModel = "spring",
        builder = @Builder(disableBuilder = true))
public interface WarehouseMapper {

    InboundBillDto toInboundDto(InboundBillEntity entity);
    OutboundBillDto toOutboundDto(OutboundBillEntity entity);
    StockDto toStockDto(StockEntity entity);

    InboundBillEntity toInboundEntity(InboundBillDto dto);
    OutboundBillEntity toOutboundEntity(OutboundBillDto dto);
    StockEntity toStockEntity(StockDto dto);

    StockEntity toInboundStockEntity(InboundBillDto dto);

    List<InboundBillDto> toInboundDtoList(List<InboundBillEntity> entity);
    List<OutboundBillDto> toOutboundDtoList(List<OutboundBillEntity> entity);
    List<StockDto> toStockDtoList(List<StockEntity> entity);


    WarehouseAreaDto toWarehouseAreaDto(WarehouseAreaEntity warehouseAreaEntity);
    List<WarehouseAreaDto> toWarehouseAreaDtoList(List<WarehouseAreaEntity> warehouseAreaEntities);
    WarehouseAreaEntity toWarehouseAreaEntity(WarehouseAreaDto warehouseAreaDto);

    WarehouseLocationDto toWarehouseLocationDto(WarehouseLocationEntity entity);
    WarehouseLocationEntity toWarehouseLocationEntity(WarehouseLocationDto dto);
    List<WarehouseLocationDto> toWarehouseLocationDtoList(List<WarehouseLocationEntity> entities);

    WarehousePositionDto toWarehousePositionDto(WarehousePositionEntity entity);
    WarehousePositionEntity toWarehousePositionEntity(WarehousePositionDto dto);
    List<WarehousePositionDto> toWarehousePositionDtoList(List<WarehousePositionEntity> entities);
}
